1. Field of the Invention
This invention relates to computing system initialization and more particularly to memory parameter configuration of a memory controller for optimum performance.
2. Description of the Related Art
Computing systems are information handling systems which are designed to give independent computing power to one or more users. Computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. Personal computer (PC) systems include desk top, floor standing, or portable versions. A typical PC system is a microcomputer that includes a microprocessor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system. PC system boards often receive expansion printed circuit boards (PCBs) to increase the capabilities of the computer system and to connect to peripheral devices through an expansion bus. For example, various multimedia devices are commonly implemented as add-in cards in desktop and portable computers or as integrated circuits for installation on a system board.
Computing systems typically include a set of built-in software routines called the basic input/output system (BIOS). The BIOS is a software interface between the system hardware and the operating system software. The BIOS facilitates programmer and user interaction with the system hardware. Because the BIOS has qualities of software and hardware, it is often referred to as firmware. The BIOS is a set of instructions to the computer's microprocessor. The BIOS is commonly coded using, for example, assembly language, and stored onto a non-volatile memory such as a ROM (Read Only Memory) or a PROM (Programmable ROM) such as an EPROM (Erasable PROM), an EEPROM (Electrically Erasable PROM), a flash RAM (Random Access Memory) or any other type of memory appropriate for storing BIOS.
The BIOS controls several important functions of personal computer systems. For instance, the BIOS performs various functions at power up, including testing and initializing memory, inventorying and initializing the system, and testing the system. These functions at power up are referred to as “system boot” or “booting the system” and can occur every time the system powers up or is reset. The BIOS also controls keystroke interpretation, display of characters, and communication via the PC ports. The operating system and application programs of a computer system can access the BIOS rather than directly manipulating I/O ports, registers and control words of the specific system hardware. BIOS can be accessed through an interface of software interrupts and contains a plurality of entry points respectively corresponding to the different interrupts.
Computing systems have memory arranged in arrays that can include multiple memory modules. Each memory module can have a wide operational parameter envelope. Many computing systems hard wire operational speeds and other parameters of the memory modules. For example, the operational frequency, read/write (R/W) control timing, row address strobe (RAS) timing, column address strobe (CAS) timing of the memory modules and other parameters can be predefined and implemented in the memory controller circuitry or defined by physical straps on the system board that are read and programmed into the memory controller. Thus, although the memory is capable of running at different parameters, these computing systems limit memory operational performance to the predefined parameters. To take advantage of new memory technologies, users must often purchase new computing systems. Further, computing system manufacturers must redesign or rework existing designs and system boards to take advantage of better performing memory technologies.
Newer computing system devices, for example, memory controllers, are programmable to operate at a variety of operational speeds and parameters. Often, BIOS programs or configure the parameters of these devices and memory controllers upon system boot to predefined parameters. However, upgrading the computing system to take advantage of newer memory technologies is often difficult because a BIOS revision is often needed. Additionally, having a BIOS program support multiple memory technologies to provide optimum performance adds complexity. Because different memory modules can have different operating envelopes, system manufacturers often limit system performance to the highest available performance of the slowest supported memory technology. Alternatively, system manufacturers can limit the use of memory to only one memory technology causing possible system disadvantages when newer or cheaper memory technologies become available. BIOS revisions are difficult and often include patching the BIOS code or completely reprogramming BIOS non-volatile memory. Even though programmability of these devices is available, computing system vendors often limit the use of memory technology or run at less than optimum performance.